怎样在一个 C 程序中调用另一个程序 (独立可执行的程序, 或系统命令)?

怎样在一个 C 程序中调用另一个程序 (独立可执行的程序, 或系统命令)?,第1张

使用库函数 system(), 它的功能正是所要的。注意, 系统返回的值最多是命令的退出状态值 (但这并不是一定的), 通常和命令的输出无关。还要注意,system() 只接受一个单独的字符串参数来表述调用程序。如果要建立复杂的命令行, 可以使用 sprintf()。根据使用的系统, 也许还可以使用系统函数, 例如exec 或 spawn (或execl,execv, spawnl, spawnv 等)。

fe函数名: exec...

功 能: 装入并运行其它程序的函数

用 法: int execl(char *pathname, char *arg0, arg1, ..., argn, NULL)

int execle(char *pathname, char *arg0, arg1, ..., argn, NULL,

char *envp[])

int execlp(char *pathname, char *arg0, arg1, .., NULL)

int execple(char *pathname, char *arg0, arg1, ..., NULL,

char *envp[])

int execv(char *pathname, char *argv[])

int execve(char *pathname, char *argv[], char *envp[])

int execvp(char *pathname, char *argv[])

int execvpe(char *pathname, char *argv[], char *envp[])

程序例: /* execv example */

#include <process.h>

#include <stdio.h>

#include <errno.h>void main(int argc, char *argv[])

{

int i printf("Command line arguments:\n")

for (i=0i<argci++)

printf("[%2d] : %s\n", i, argv[i]) printf("About to exec child with arg1 arg2 ...\n")

execv("CHILD.EXE", argv) perror("exec error") exit(1)

}

多看书,多Google,百度,

例:

#include<stdio.h>

intsushu(intx)

{inti

for(i=2i<xi++)

if(x%i==0)break

if(i==x)return1

elsereturn0

}

main()

{inti,n=0

for(i=2i<=1000i++)

if(sushu(i)==1)n++:

printf("n=%d",n)

}

扩展资料

使用vfork()新建子进程,然后调用exec函数族

#include<unistd.h>

main()

{

char*argv[]={“ls”,”-al”,”/etc/passwd”,(char*)}

if(vfork()==0)

{

execv(“/bin/ls”,argv)

}else{

printf(“Thisistheparentprocess\n”)

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11072631.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-13
下一篇 2023-05-13

发表评论

登录后才能评论

评论列表(0条)

保存