linux下用代码实现系统命令
来源:互联网 发布:赢顺交易软件 编辑:程序博客网 时间:2024/06/04 09:58
<span style="color:#3333ff;">第一例:实现系统命令</span>#include <stdio.h>#include <sys/wait.h>#include <stdlib.h>#include <unistd.h>void my_system(char *str){pid_t pid;pid=fork();if(pid<0){perror("fork");}if(pid==0){execlp("/bin/sh","sh","-c",str,NULL);}if(pid>0){int status=0;wait(&status);if(WIFEXITED(status)){printf("return value=%d\n",WEXITSTATUS(status));}}}int main(int argc, char *argv[]){char str[50]="";printf("please input :");fgets(str,10,stdin);my_system(str);return 0;}<span style="color:#3333ff;">第二例:实现系统命令并将其打印出的数据放入数组</span>#include <stdio.h>#include <sys/wait.h>#include <stdlib.h>#include <unistd.h>int main(int argc, char *argv[]){pid_t pid;int ret = 0;int fd[2] = {0};//创建管道ret = pipe(fd);if(ret == -1){perror("pipe");_exit(1);}//创建子进程,目的 1exec 2复制管道文件描述符pid = vfork();if(pid < 0){perror("vfork");}else if(pid == 0){dup2(fd[1], 1);//标准输出重定向到管道的写端//该命令打印的是 主板序列号,是我项目需要,大家可以将str改为自己想要实现的命令,如 lschar str[50]="dmidecode -s system-serial-number";execlp("/bin/sh","sh","-c",str,NULL);}else{char result[100] = "";read(fd[0], result, sizeof(result));//从管道的读端读取数据char msg[100] = "";sprintf(msg, "%c%c:%c%c:%c%c",result[7],result[8],result[10],result[11],result[13],result[14]);printf("---->%s\n",msg);}return 0;}<span style="color:#3333ff;">后续发现:上面第一例的代码 实际上是用代码封装了system()函数,本人测试过,将命令当做参数写入system();也可以实现相应的效果,下面是从网上摘抄的system()源码:</span>int system(const char * cmdstring){pid_t pid;int status;if(cmdstring == NULL){return (1);}if((pid = fork())<0){status = -1;}else if(pid == 0){execl("/bin/sh", "sh", "-c", cmdstring, (char *)0);-exit(127); //子进程正常执行则不会执行此语句}else{while(waitpid(pid, &status, 0) < 0){if(errno != EINTER){status = -1;break;}}}return status;}
0 0
- linux下用代码实现系统命令
- linux下cp命令---C代码实现
- Linux下gerp命令-----C代码实现
- linux系统wget命令的java代码实现
- java代码实现ping命令(支持linux系统)
- [zt] Linux 下几个文件操作命令的代码实现
- Linux 下几个文件操作命令的代码实现
- Linux 下几个文件操作命令的代码实现(转载)
- Linux 下几个文件操作命令的代码实现
- Linux下模拟ping命令的C代码实现1
- Linux下模拟ping命令的C代码实现2
- Linux 下几个文件操作命令的代码实现
- Linux 下几个文件操作命令的代码实现
- linux下tree、命令的用法及实现代码
- Linux下模拟ping命令的C代码实现
- Linux 下几个文件操作命令的代码实现
- Linux下几个文件擦做命令代码实现
- Linux下模拟ping命令的C代码实现
- webservices不能正常使用,导致sharpoint2010上webpart不可调用webservices
- App启动界面加载自己想要的图片
- eclipse 项目中点击ctrl+左键不能进入方法
- 据说产品经理都这样~
- 剑指offer之二叉树的深度
- linux下用代码实现系统命令
- Socket
- Android源码目录结构-4.0
- 文章标题
- 黑马程序员——java基础——GUI
- 田忌赛马
- linux date
- 第六届蓝桥杯A组C/C++ 第二题 星系炸弹
- Linux进程间通信——使用共享内存