system函数调用

合集下载

linux c语言 system的用法

linux c语言 system的用法

linux c语言system的用法
system函数是C语言中的一个标准库函数,用于在程序中调用操作系统的命令。

其函数原型为:cint system(const char *command);system函数通过传入一个字符串类型的命令,将该命令传送给shell执行。

在执行完命令后,system 函数会返回命令的返回值。

使用system函数时需要注意以下几点:1. 在Linux 中,system函数通过调用/bin/sh来执行命令,因此可以使用shell的特性,比如使用{ }、&&、和;等操作符来组合多个命令。

2. system函数在调用命令时会将当前进程的环境变量传递给新创建的子进程,因此在执行命令时可以使用当前程序定义的环境变量。

3. system函数在执行命令时,会阻塞当前进程直到命令执行完成。

如果执行命令失败,系统函数会返回-1;如果成功,会返回命令的返回值。

以下是system函数的示例代码:c#include <stdio.h>#include
<stdlib.h>int main() { int ret; ret = system("ls -l"); printf("命令返回值:%d\n", ret); return 0;}上述代码中,程序调用了system函数执行了一个"ls -l"的命令,并通过printf函数打印命令的返回值。

需要注意的是,在使用system函数执行命令时,要确保参数command不会包含用户输入的不受信任的内容,否则可能会造成系统安全问题。

php system函数的用法

php system函数的用法

php system函数的用法PHP System函数的用法PHP System函数是一种非常有用的函数,它可以在PHP脚本中执行外部命令或程序。

这个函数在很多场景下都非常实用,比如说在需要调用其他程序或者进行系统管理方面,都可以使用system函数。

一、system函数的基本语法system ( string $command [, int &$return_var ] ) : string|false其中,$command表示要执行的命令或程序,$return_var表示命令的返回值。

二、system函数的返回值1. 返回值为字符串类型:当system函数执行成功时,会返回命令的输出结果。

如果执行失败,则会返回false。

2. 返回值为布尔类型:当系统无法执行指定命令时,会返回false。

三、system函数的参数说明1. $command:要执行的操作或者命令。

可以是任何操作系统支持的外部命令或程序。

2. &$return_var:一个可选参数,当指定该参数时,在系统完成命令后将会把该参数设置为命令退出状态码。

四、使用示例下面我们来看几个实际应用场景下如何使用system函数:1. 执行Linux shell脚本:$command = '/bin/bash /path/to/script.sh';$result = system($command);2. 执行Windows批处理文件:$command = 'C:\Windows\System32\cmd.exe /cC:\path\to\script.bat';$result = system($command);3. 执行MySQL备份脚本:$command = 'mysqldump -u username -p password dbname > /path/to/backup.sql';$result = system($command);4. 执行Linux系统管理命令:$command = 'sudo apt-get update';$result = system($command);五、system函数的安全性问题由于system函数可以执行外部命令或程序,因此在使用时需要特别注意安全性问题。

c语言中system函数的使用

c语言中system函数的使用

c语言中system函数的使用system(函数是C语言中的库函数之一,可以用于执行系统命令。

它是通过调用操作系统的shell来执行命令,并在命令执行完成后返回。

system(函数的声明如下:```c```下面是使用system(函数的一些常见用法:1.执行简单的单个命令```c#include <stdlib.h>#include <stdio.h>int maisystem("ls"); // 在Linux下,执行ls命令return 0;```利用system(函数可以执行一些简单的命令,例如在Linux下执行`ls`命令,可以通过输出来查看当前目录下的文件和文件夹。

2.执行带有命令行参数的命令```c#include <stdlib.h>#include <stdio.h>int maisystem("gcc -o hello hello.c"); // 编译hello.c文件为可执行文件helloreturn 0;```使用system(函数可以执行带有命令行参数的命令,例如在Linux下使用GCC编译`hello.c`文件为可执行文件`hello`。

3.使用条件语句判断命令执行结果```c#include <stdlib.h>#include <stdio.h>int maiint result = system("gcc -o hello hello.c"); // 编译hello.c 文件为可执行文件helloif (result == 0)printf("编译成功!\n");} elseprintf("编译失败!\n");}return 0;```可以将system(函数的返回值与预先定义的常量进行比较,例如0表示命令执行成功。

关于在C++中调用system函数

关于在C++中调用system函数

关于在C++中调用system函数要调用该函数,必须在前面包含:#include <cstdlib>system就是一个C语言标准库里的标准函数。

system函数可以执行你发出的控制台命令。

当然,得用英文的双引号将命令括起来,以表示一句话。

不过,你也可以直接在控制台输入这个命令,当然,那时就不用引号了。

前面我们已经学会如何通过“运行”命令来搞出一个控制台窗口,现在你只需在那个窗口里输入pause试试,但和控制台相关的函数或代码,一般无法在“图形用户界面”里使用。

例题:编一程序,实现几个简单的DOS功能,包括:mtype、mcopy、mcomp 等。

mtype 实现DOS的type功能,显示.TXT文件的内容mcopy 实现DOS的copy功能,复制一个任意格式的磁盘文件。

mcomp 实现DOS的comp功能,比较二个任意格式的磁盘文件,从长度、内容二个方面。

注意用带参数的main函数。

思路:通过main函数的参数构造命令字符串,然后用system函数调用执行。

int main(int argc,char **argv){ …… }但是需要注意,在主程序段中直接输入以下代码system("d:\dir");system("dir d:");system("ping xxx.xxx.xxx.xxx");system("copy d:\1.txt e:\2.txt");输出都没有反应呢,程序运行也没有报错。

编译程序不会检查你的输入参数字符串,所以就算你的参数(字符串)写错了,它也肯定不会报错。

你的这几个调用都是独立的,实际上操作是执行了,只是你看不到。

唯一能看到效果的应该是最后一个吧,如果文件存在的话,应该可以拷贝成功的。

如果想感性地看到其他几条指令的效果,不妨在最后加上一句:system("pause")system()函数针对的是DOS界面的操作,即调用DOS命令库中的命令来完成相关操作,所以一般只能处理一些信息并在DOS界面上显示,而很少用于提取信息。

常见的system函数

常见的system函数

---------------------------------------------------------------最新资料推荐------------------------------------------------------常见的system函数关于 C 语言中 system 函数 system 函数是可以调用一些DOS 命令,比如 system(cls);//清屏,等于在 DOS 上使用 cls 命令.写可执行文件路径,可以运行它system()函数用于向操作系统传递控制台命令行,以 WINDOWS 系统为例,通过system()函数执行命令和在 DOS 窗口中执行命令的效果是一样的,所以只要在运行窗口中可以使用的命令都可以用 SYSTEM()传递,但要注意的是输入斜线时要输入两个,以名 C 语言当作转义字符处理。

下面列出常用的 DOS 命令,都可以用 system 函数调用: ASSOC 显示或修改文件扩展名关联。

AT 计划在计算机上运行的命令和程序。

ATTRIB 显示或更改文件属性。

BREAK 设置或清除扩展式 CTRL+C 检查。

CACLS 显示或修改文件的访问控制列表(ACLs)。

CALL 从另一个批处理程序调用这一个。

CD 显示当前目录的名称或将其更改。

CHCP 显示或设置活动代码页数。

CHDIR 显示当前目录的名称或将其更改。

CHKDSK 检查磁盘并显示状态报告。

CHKNTFS 显示或修改启动时间磁盘检查。

CLS 清除屏幕。

1 / 4CMD 打开另一个 Windows 命令解释程序窗口。

COLOR 设置默认控制台前景和背景颜色。

COMP 比较两个或两套文件的内容。

COMPACT 显示或更改 NTFS 分区上文件的压缩。

CONVERT 将 FAT 卷转换成 NTFS。

您不能转换当前驱动器。

COPY 将至少一个文件复制到另一个位置。

DATE 显示或设置日期。

DEL 删除至少一个文件。

perl中system用法

perl中system用法

perl中system用法system是一个perl内建函数,用于执行外部命令。

该函数将创建一个子进程来执行指定的命令,并等待该命令执行完成,最后返回命令的退出状态。

system函数的基本语法如下:下面是system函数的一些常用用法和注意事项:1.字符串参数当使用字符串作为参数时,系统将使用默认的shell来执行命令。

这种情况下,参数中的通配符将被shell解释。

例如,下面的代码将调用system执行ls命令,并将结果打印输出:```system("ls");```2.数组参数当使用数组作为参数时,数组的第一个元素应该是要执行的命令,其余元素为命令的参数。

例如,下面的代码将调用system执行ls命令,并传递了一个参数"-l":```system("ls", "-l");```或者可以将命令和参数分别存储在一个数组中,然后将数组作为参数传递给system函数:``````3.返回值system函数在命令执行成功时返回0,失败时返回非零值。

如果命令无法执行,则system函数将返回-1例如,下面的代码检查系统中是否安装了curl命令:```my $result = system("which curl");if ($result == 0)print "curl is installed\n";} elseprint "curl is not installed\n";```4.执行结果system函数只会捕获命令的退出状态,不会捕获命令的输出结果。

如果需要获取命令的输出结果,可以使用反引号操作符(``)或者使用open函数来将命令的输出重定向到文件。

例如,下面的代码使用反引号操作符获取ls命令的输出,并将其打印输出:```my $output = `ls`;print $output;```5. 跳过shell默认情况下,system函数会使用默认的shell来执行命令。

system在c语言中的用法

system在c语言中的用法

system在c语言中的用法以下是 9 条关于“system 在 C 语言中的用法”的内容:1. 嘿,你可知道 system 函数能帮你执行外部命令呢!就像你在代码里喊了一声“帮我打开这个程序”,system("notepad"); 这样不就轻松调用记事本啦,多神奇呀!2. system 函数呀,就像是一个神奇的遥控器!想想看,你可以通过它来控制整个系统呢,比如 system("shutdown -s"); 哇哦,这不是直接让电脑关机嘛,厉害吧!3. 哎呀呀,system 在 C 语言里的作用可不容小觑呢!你能利用它来做很多事情哦。

举个例子,system("calc"); 哈哈,计算器就这么弹出来啦,是不是超有意思!4. 嘿们,system 简直就是代码世界里的一把万能钥匙呀!比如在程序里写system("dir"); 就能立刻看到当前目录下的所有文件和文件夹,这也太方便啦!5. 哇塞,system 的用法真的很特别呢!它可以让你的程序和操作系统紧密互动起来哟。

像 system("cls"); 不就把屏幕清得干干净净啦,多好用!6. 你想想啊,system 在 C 语言里那可是相当重要的存在呀!比如你想打开某个网页,system("start 这不就可以轻松浏览网页啦,好酷呀!7. 哈哈,system 不就像是一个隐藏在代码后面的小帮手嘛!当你需要执行一些系统操作时,它就出现啦。

比如 system("taskmgr"); 任务管理器这不就出来啦,神奇不神奇!8. 哎呀,system 在 C 语言里真的是作用多多呀!能让你的程序变得更加强大呢。

就像system("ipconfig"); 一下就能看到网络配置信息啦,超厉害的!9. 反正我觉得呀,system 在 C 语言里绝对是不可或缺的一部分!它能让你的程序变得更有趣、更实用呢。

mfc system函数

mfc system函数

mfc system函数MFC(Microsoft Foundation Class)是微软公司为Windows操作系统开发的一套类库,用于简化Windows应用程序的开发。

而system函数是C/C++语言中的一个标准库函数,用于调用操作系统的命令解释器来执行命令。

在MFC中,可以使用system函数来执行系统命令,比如启动外部程序、执行批处理文件等。

在MFC中使用system函数需要包含头文件<cstdlib>,并且调用时直接使用system("command")的形式,其中"command"是要执行的系统命令。

例如,可以使用system("dir")来执行dir命令列出当前目录的文件列表。

需要注意的是,system函数的返回值是命令的返回值,通常是命令执行的结果或者错误代码。

在MFC中使用system函数需要注意安全性和可移植性。

由于system函数直接调用系统命令解释器,存在安全风险,特别是当命令参数来自用户输入时,容易受到命令注入攻击。

因此,在实际开发中,建议谨慎使用system函数,并且对用户输入进行严格过滤和验证。

另外,由于system函数的行为依赖于操作系统,可能会导致程序在不同平台上的行为不一致,因此在跨平台开发中需要谨慎使用system函数。

除了system函数外,MFC还提供了一些类似的函数来执行外部命令,比如CreateProcess函数可以用于启动一个新进程执行外部程序,ShellExecute函数可以用于打开文件、打印文件、打开URL 等操作。

这些函数在不同的场景下可能更加灵活和安全,可以根据具体需求选择合适的函数来执行系统命令。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

system函数调用
相关函数
fork,execve,waitpid,popen
表头文件
#include<stdlib.h>
定义函数
int system(const char * string);
函数说明
system()会调用fork()产生子进程,由子进程来调用/bin/sh-c string来执行参数string字符串所代表的命令,此命>令执行完后随即返回原调用的进程。

在调用system()期间SIGCHLD 信号会被暂时搁置,SIGINT和SIGQUIT 信号则会被忽略。

返回值
=-1:出现错误
=0:调用成功但是没有出现子进程
>0:成功退出的子进程的id
如果system()在调用/bin/sh时失败则返回127,其他失败原因返回-1。

若参数string为空指针(NULL),则返回非零值>。

如果system()调用成功则最后会返回执行shell命令后的返回值,但是此返回值也有可能为system()调用/bin/sh失败所返回的127,因此最好能再检查errno 来确认执行成功。

附加说明
在编写具有SUID/SGID权限的程序时请勿使用system(),system()会继承环境变量,通过环境变量可能会造成系统安全的问题。

范例
#i nclude<stdlib.h>
main()
{
system(“ls -al /etc/passwd /etc/shadow”);
}
执行结果:
-rw-r--r-- 1 root root 705 Sep 3 13 :52 /etc/passwd
-r--------- 1 root root 572 Sep 2 15 :34 /etc/shado
例2:
char tmp[];
sprintf(tmp,"/bin/mount -t vfat %s /mnt/usb",dev);
system(tmp);
其中dev是/dev/sda1。

system源码
#include
#include
#include
#include
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;
}
先分析一下原理,然后再看上面的代码大家估计就能看懂了:
当system接受的命令为NULL时直接返回,否则fork出一个子进程,因为fork在两个进程:父进程和子进程中都返回,这里要检查返回的pid,fork在子进程中返回0,在父进程中返回子进程的pid,父进程使用waitpid等待子进程结束,子进程则是调用execl来启动一个程序代替自己,execl("/bin/sh", "sh", "-c", cmdstring,(char*)0)是调用shell,这个shell的路径是/bin/sh,后面的字符串都是参数,然后子进程就变成了一个shell进程,这个shell的参数是
cmdstring,就是system接受的参数。

在windows中的shell是command,想必大家很熟悉shell接受命令之后做的事了。

如果上面的你没有看懂,那我再解释下fork的原理:当一个进程A调用fork时,系统内核创建一个新的进程B,并将A的内存映像复制到B的进程空间中,因为A和B是一样的,那么他们怎么知道自己是父进程还是子进程呢,看fork的返回值就知道,上面也说了fork 在子进程中返回0,在父进程中返回子进程的pid。

execl是编译器的函数(在一定程度上隐藏具体系统实现),在linux中它会接着产生一个linux 系统的调用execve, 原型见下:
int execve(const char * file,const char **argv,const char **envp);
看到这里你就会明白为什么system()会接受父进程的环境变量,但是用system改变环境变量后,system一返回主函数还是没变,原因从system的实现可以看到,它是通过产生新进程实现的,从我的分析中可以看到父进程和子进程间没有进程通信,子进程自然改变不了父进程的环境变量本篇文章来源于:开发学院 原文链接:/2010/1017/26463.php。

相关文档
最新文档