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

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

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

#include<sys/types.h>

#include<unistd.h>

#include<stdio.h>

int

main(int

argc,

char

**

argv

)

{

int

pid

pid

=

fork()

//创建第一个子进程

if

(pid

<

0)

{

printf("fork

first

process

error!")

}

else

if(

pid

==

0

)

//子进程流程

{

printf("operating

systems")

//第一个子进程打印

}

else

//父进程流程

{

printf("你的学号\n")

//父进程打印

pid

=

fork()

//创建第二个子进程

if

(pid

<

0)

{

printf("fork

second

process

error!")

}

else

if(

pid

==

0

)

//子进程流程

{

printf("data

structure")

//第二个子进程打印

}

}

return

0

}

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,百度,


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

原文地址:https://54852.com/yw/11163546.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存