函数名: system()
用 法: int system(char *command);
原理:
创建一个子进程去加载一个新程序执行,而Linux命令基本都是一个单独的进程实现的,所以你所掌握的Linux命令越多,该函数功能就越强大。
其原理基本就是这样,如果想要深入了解可以去了解一下相关的函数。
(执行shell 命令)
相关函数
fork,execve,waitpid,popen
头文件
#include<stdlib.h>文章来源:https://www.toymoban.com/news/detail-654907.html
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
system("ls -l");
return 0;
}
一下是一段通过system操控mplayer播放器的代码,有兴趣的可以自行解读一下。文章来源地址https://www.toymoban.com/news/detail-654907.html
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
void *play_task(void *arg)
{
FILE *fp = popen("mplayer -slave -quiet -input file=/home/gec/pipe -geometry 100:100 -zoom -x 800 -y 480 dream.avi", "r");
if (fp == NULL)
{
perror("加载播放器失败\n");
return NULL;
}
while (1)
{
// 读播放器返回的数据
char buf[1024] = {0};
fgets(buf, 1024, fp);
if (feof(fp))
{
printf("播放完毕\n");
break;
}
printf("play_msg=%s\n", buf);
}
pclose(fp);
};
int main()
{
while (1)
{
printf("1.开始播放 2.快进 3.快退 4.获取时间 5.退出播放\n");
int n = 0;
scanf("%d", &n);
if (n == 1)
{
// 结束播放
system("killall mplayer");
// 开启播放器线程
pthread_t tid;
pthread_create(&tid, NULL, play_task, NULL);
}
if (n == 2)
{
system("echo seek +10 > /home/gec/pipe");
}
if (n == 3)
{
system("echo seek -10 > /home/gec/pipe");
}
if (n == 4)
{
system("echo get_time_pos > /home/gec/pipe");
}
if (n == 5)
{
system("killall mplayer");
break;
}
}
}
到了这里,关于C语言 常用工具型API --------system()的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!