【发布时间】:2021-07-14 14:01:35
【问题描述】:
我想在 C 源代码中使用 Linux 命令。
我可以使用System() 功能吗?这在 Linux 上可行吗?
如果我不能使用 System() 函数,我该怎么办?我想“tar xvf example.tar”。
【问题讨论】:
-
是的,您可以使用
system()、popen()或fork()/exec()命令。
我想在 C 源代码中使用 Linux 命令。
我可以使用System() 功能吗?这在 Linux 上可行吗?
如果我不能使用 System() 函数,我该怎么办?我想“tar xvf example.tar”。
【问题讨论】:
system()、popen() 或fork()/exec() 命令。
您可以使用system() 和exec() 函数
【讨论】:
如果你只想执行shell命令而不寻找任何返回值,那么你可以使用system()函数调用。
不建议使用系统调用(参见系统手册页)。我建议您使用 exec(),它应该在执行 fork() 之后在子进程中调用。
下一个替代方法是使用 popen()。
piff = (FILE *)popen("ls -l", "r");
if (piff == (FILE *)0)
return (-1);
while ((i = read(fileno(piff), buff, sizeof (buf))) == -1) {
if (errno != EINTR) {
break;
}
(void)pclose(piff);
【讨论】: