Linux中C语⾔执⾏shell脚本的⽅法
主要有三种⽅法:exec函数簇,system函数以及popen函数,其中需要注意的是,exec函数簇的函数执⾏成功后是⽆返回的,⼀般需要和fork()函数同时使⽤。在使⽤时需要另外的fork⼀个进程。 popen() 函数通过创建⼀个管道,调⽤ fork 产⽣⼀个⼦进程,执⾏⼀个 shell 以来开启⼀个进程。这个进程必须由 pclose() 函数关闭,⽽不是 fclose() 函数。
exec函数簇:
函数原型:
#include <unistd.h>
extern char **environ;
int execl(const char *path, const char *arg, ...
/* (char *) NULL */);
int execlp(const char *file, const char *arg, ...
/
* (char *) NULL */);
int execle(const char *path, const char *arg, ...
/*, (char *) NULL, char * const envp[] */);
int execv(const char *path, char *const argv[]);
int execvp(const char *file, char *const argv[]);
int execvpe(const char *file, char *const argv[],
char *const envp[]);
使⽤如下:
7 char *const argv[] = {"ls", "-al", "NULL"};
8 char *const envp[] = {"PATH=/bin:/usr/bin", NULL};
9
10 execl("/bin/ls", "ls", "-al", (char*)NULL);
11
12 execv("/bin/ls", argv);
13
14 execle("/bin/ls", "ls", "-al", (char*)NULL, envp);
15
16 execve("/bin/ls", argv, envp);
17
18 execlp("ls", "ls", "-al", (char*)NULL);
19
20 execvp("ls", argv);
system函数:
函数原型:
#include <stdlib.h>
int system(const char *command);
直接将需要执⾏的命令或者shell脚本放⼊其中即可:如,
system("/etc/xxx.sh");
system("ls -al /etc/");
popen函数:
linuxshell脚本怎么运行FILE * popen ( const char * command , const char * type ); int pclose ( FILE * stream );
如:
#include<stdio.h>
#define _LINE_LENGTH 300
int main(void)
{
FILE *file;
char line[_LINE_LENGTH];
file = popen("ls", "r");
if (NULL != file)
{
while (fgets(line, _LINE_LENGTH, file) != NULL)
{
printf("line=%s\n", line);
}
}
else
{
return 1;
}
pclose(file);
return 0;
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论