请问如何正确使用exec函数(100分)

  • 主题发起人 主题发起人 w_yfeng
  • 开始时间 开始时间
W

w_yfeng

Unregistered / Unconfirmed
GUEST, unregistred user!
#include <stdio.h>
#include <process.h>
#include <stdlib.h>
main()
{
char filename[100];
sprintf(filename,"d://php/php.exe test.php");
_execl( );
}
如何在c程序中执行另外一个程序
上面的php.exe 是一个dos下的可执行程序,test.php是参数,在_execl中如何使用,或者提供
更好的方法。谢谢
 
用system()函数比较方便。
#include stdlib.h
system(filename);
 
system()函数对于系统命令是有用的,但对于外部调用程序好像不行,system我试过的呀
 
"d://php//php.exe test.php"
~~~~~
system()应该是可以的,你上面的路径改一下再试试。
 
我改了,发现运行的话就死在那儿了,不知哪儿还有问题
 
我不明白为什么会这样,下面是exec的例子:
/* EXEC.C illustrates the different versions of exec including:
* _execl _execle _execlp _execlpe
* _execv _execve _execvp _execvpe
*
* Although EXEC.C can exec any program, you can verify how
* different versions handle arguments and environment by
* compiling and specifying the sample program ARGS.C. See
* SPAWN.C for examples of the similar spawn functions.
*/
#include <stdio.h>
#include <conio.h>
#include <process.h>
char *my_env[] = /* Environment for exec?e */
{
"THIS=environment will be",
"PASSED=to new process by",
"the EXEC=functions",
NULL
};
void main()
{
char *args[4], prog[80];
int ch;
printf( "Enter name of program to exec: " );
gets( prog );
printf( " 1. _execl 2. _execle 3. _execlp 4. _execlpe/n" );
printf( " 5. _execv 6. _execve 7. _execvp 8. _execvpe/n" );
printf( "Type a number from 1 to 8 (or 0 to quit): " );
ch = _getche();
if( (ch < '1') || (ch > '8') )
exit( 1 );
printf( "/n/n" );
/* Arguments for _execv? */
args[0] = prog;
args[1] = "exec??";
args[2] = "two";
args[3] = NULL;
switch( ch )
{
case '1':
_execl( prog, prog, "_execl", "two", NULL );
break;
case '2':
_execle( prog, prog, "_execle", "two", NULL, my_env );
break;
case '3':
_execlp( prog, prog, "_execlp", "two", NULL );
break;
case '4':
_execlpe( prog, prog, "_execlpe", "two", NULL, my_env );
break;
case '5':
_execv( prog, args );
break;
case '6':
_execve( prog, args, my_env );
break;
case '7':
_execvp( prog, args );
break;
case '8':
_execvpe( prog, args, my_env );
break;
default:
break;
}
/* This point is reached only if exec fails. */
printf( "/nProcess was not execed." );
exit( 0 );
}
 
以上 是msdn中的例程,我也看了,对于第一个参数prog 有点不能理解
 
是不是转化为_execl("d://php//php.exe","test.php");
 
prog是你的exe文件名
 
后退
顶部