linux C编程中怎样调用shell命令?
比如有这样的代码:
void main(){
system("curl http://localhost/test.html");//我想执行一个curl命令,而且,这个shell命令执行是异步的,不能阻塞后面的printf语句执行
printf("over");
}
[解决办法]
多线程吧
[解决办法]
除非开辟另外的线程才能完全异步,并使用fork+exec+pipe将结果传回到父进程,其他再怎么设计得根据程序需求说了。
简单点不需要你懂太多原理,popen就可以了。
[解决办法]
1. sysytem
2. fork - exec*
3. popen
[解决办法]
就单单你这个问题回答吧。
linux C编程中怎样调用shell命令?
system("ps -l"); 里面就可以写shell命令。
想不阻塞的话直接加个&后台运行~~
像我经常这样来创建路径
sprintf(acBuff,"mkdir %s",PATH_Buff);
system(acBuff);
希望对你有帮助!
[解决办法]
都说了放到线程里执行了,不是命令阻塞了,是waitpid阻塞在那里, 懂吗?
popen是不阻塞的, 但你要想办法获知子进程退出后调用pclose将进程waitpid回收并将pipe关闭。
除了上面现成的接口,你如果会LinuxC开发就简单了,fork, exec,父进程可以捕获SIGCHLD在里面非阻塞waitpid回收进程即可,或者你的程序属于一个轮询结构,那么可以在轮询里waitpid。
[解决办法]