导航:首页 > 文件类型 > linuxsystem头文件

linuxsystem头文件

发布时间:2023-03-29 06:44:08

『壹』 linux下的c编程:系统调用

linux c system函数介绍:

system(执行shell 命令)
相关函数
fork,execve,waitpid,popen
表头文件
#i nclude
定义函数
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
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 <syspes.h>
#include <sys/wait.h>
#include <errno.h>
#include <unistd.h>

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的返回值呢??

char buf[10];
char * ps="ps -ef|grep -c root";
FILE *ptr;
int i;

if((ptr = popen(ps, "r")) != NULL)
{
fgets(buf, 10 , ptr);
i = atoi(buf);
pclose(ptr);
}

可以man下waitpid查看下如何检查status的值
int ret = system("ls -al /etc/passwd /etc/shadow");
if(WIFSIGNALED(ret))
具体的这些宏查看man waitpid

『贰』 Linux编程中带有<linux/mole.h>头文件该怎么写Makefile

你应该用的gcc编译器吧?
考虑一下编译选项:
-l -L
你要写makefile,一样考虑上面的两个选项。
我看你使用的那些库不是你自己写的,那只能说明编译的时候,要制定头文件与库文件的位置。

『叁』 linux操作系统和boot目录下面都是什么文件

/boot:启动Linux的核心文件;

以下是其他常用的linux操作系统目录:
/bin:存版放最常用命令;
/dev:设备权文件;
/etc:存放各种配置文件;
/home:用户主目录;
/lib:系统最基本的动态链接共享库;
/mnt:一般是空的,用来临时挂载别的文件系统;
/proc:虚拟目录,是内存的映射;
/sbin:系统管理员命令存放目录;
/usr:最大的目录,存许应用程序和文件;
/usr/X11R6:X-Window目录;
/usr/src:Linux源代码
/usr/include:系统头文件;
/usr/lib:存放常用动态链接共享库、静态档案库;
/usr/bin、/usr/sbin:这是对/bin、/sbin的一个补充;

『肆』 在linux下编程要使用open系统调用要包含哪个头文件

Linux下对文件操作有两种方式:系统调用(system call)和库函数调用(Library functions)。可以参考《Linux程序设计》版(英文原版为《Beginning Linux Programming》,作者是权Neil Matthew和Richard Stones)第三章: Working with files。系统调用实际上就是指最底层的一个调用,在linux程序设计里面就是底层调用的意思。面向的是硬件。而库函数调用则面向的是应用开发的,相当于应用程序的api,采用这样的方式有很多种原因,第一:双缓冲技术的实现。第二,可移植性。第三,底层调用本身的一些性能方面的缺陷。

『伍』 linux下i3system相机的.so文件和.h文件怎么使用

linux下的.so文件为共享库,相当于windows下的dll文件,使用方法如下:在你的工程源版代码里包含.h头文件,然后可以权调用动态库里的函数,在链接的时候加上如下编译器参数:-l
xx.so如果你的so文件是以lib开头的,还可以直接这样使用:-lxxxx是你的.so文件名其实使用方法和你使用数学库函数是一样的,源代码中添加#include
<math.h>,编译的时候,加上-lm参数。

『陆』 linux下C语言的库函数的头文件放在哪个目录下啊

一般来说是放在来/usr/include目录下的;

但是这个源并不局限也是可控的,如果我们进行开发过程中, 就会在内核的库函数文件目录:

例如在:/XXX/XXX/linux-X.X/include

所以根据不同的情况,头文件存放的目录也是不同的,具体需要可以根据locate和grep命令进行查询。

『柒』 linux 下的内核头文件放在哪里

linux下的内核头文件放在/usr/include/linux/和/usr/include/sys/

linux目录树:
scripts目录
该目录中不包含任何核心代码,该目录下存放了用来配置内核的脚本和应用程序源码。
lib目录
该目录主要包含两部分内容:gnuzip解压缩算法,用于在系统启动过程中将压缩的内核镜像解压缩;剩余的文件用于实现一个C库的子集,主要包括字符串和内存操作等相关函数。
mm目录
该目录包含了体系结构无关的内存管理代码,包括通用的分页模型的框架、伙伴算法的实现和对象缓冲器slab的实现代码。
include目录
这个目录包含了Linux源代码目录树中绝大部分头文件,每个体系架构都在该目录下对应一个子目录,该子目录中包含了给定体系结构所必需的宏定义和内联函数。
init目录
该目录中存放的是系统核心初始化代码,内核初始化入口函数start_kernel就是在该目录中的文件main.c内实现的。
kernel目录
该目录中存放的是Linux内核的最核心的代码,用于实现系统的核心模块,这些模块包括:进程管理、进程调度器、中断处理、系统时钟管理、同步机制等。
arch目录
该目录中的每个子目录中都与某种体系结构相对应,用于存放体系结构相关代码,向平台无关的系统核心模块提供所需的功能接口。每个体系结构对应的子目录下通常至少包含以下几个子目录:kernel子目录、lib子目录、mm子目录、boot子目录。
系统次核心组件包括:
block目录:用于实现块设备的基本框架和块设备的I/O调度算法。
usr目录:该目录中的代码为内核尚未完全启动时执行用户空间代码提供了支持
ipc目录:该目录中的文件用于实现System V的进程间通信模块。
driver目录:用于存放各类设备的驱动程序。
sound目录:存放了声音系统架构,如Open Sound System(OSS)、Advanced Linux Sound Architecture(ALSA)的相关代码和具体声卡的设备驱动程序。
security目录:存放了Security-Enhanced Linux(SELinux)安全框架的实现代码
crypto目录:该目录中存放了相关的加密算法的代码。
Documentation目录:存放了与内核相关的文档。
net和fs目录:包含linux内核支持的众多网络协议和文件系统。

『捌』 RedhatLinux驱动头文件<asm/system.h>和<asm/uaccess.h>所在包是哪一个

kernel-devel

『玖』 Linux system 函数

最近工作中在 Linux 下,某些指定的程序需要调用指定的 shell 脚本完成指定工作,以前也曾经做过类似的功能,调用 system 函数执行指定的脚本,以前并不关心 shell 脚本是否执行成功了,现在的功能需要根据 shell 脚本执行成功与否,于是查询了下 system 函数的说明,有此文以做笔记之用。

功能:调用/bin/sh -c 执行指定的脚本 command

常规使用方法:

关于返回值:

答案是 都错

man手册

看着挺晕的,但是如果对于 system 的执行过程了解的话,就很容易理解了,函数执行分为以下几个阶段。
阶段1:创建子进程等准备工作。如果失败,返回-1
阶段2:调用 /bin/sh 拉起脚本,如果拉起失败或者shell未正常执行,原因值被写入ret中
阶段3:如果 shell 脚本执行成功, shell 脚本的返回值写入ret中

从上面可知,不管 shell 脚本返回什么值,只要调用了/bin/sh,并且执行过程没有被信号中断,都算正常结束。因为脚本是在子进程中执行的,所以要想获取脚本是否执行成功的方法只能用系统提供的两个宏。

由于我们一般在 shell 中会通过返回值判断脚本是否执行成功,成功返回0,成功返回整数。所以判断一个脚本是否执行成功,应该满足三个条件:

注意:当 shell 脚本不存在时、没有执行条件等,前两个条件也会成立,此时WEXITSTATUS(ret)为127,所以shell脚本中不能将127作为返回值,shell脚本中的异常返回值最好从1开始递增,成功返回0。

system 用起来,看则简单,实则不那么简单,有很多隐藏的坑,需要自己深入理解原理,才能更好地使用,也可以用其他实现方式完成相同的功能。
最后对自己说,多写,多思,多总结

『拾』 linux查看包含的头文件源文件

linux下的内核头文件放在/usr/include/linux/和/usr/include/sys/linux目录树:scripts目录该目录中不包含任何核心代码,该目录下存放了用来配置内核的脚本和应用程序源码。lib目录该目录主要包含两部分内容:gnuzip解压缩算法,用于在系统启动过程中将压缩的内核镜像解压缩;剩余的文件用于实现一个C库的子集,主要包括字符串和内存操作等相关函数。mm目录该目录包含了体系结构无关的内存管理代码,包括通用的分页模型的框架、伙伴算法的实现和对象缓冲器slab的实现代码。include目录这个目录包含了Linux源代码目录树中绝大部分头文件,每个体系架构都在该目录下对应一个子目录,该子目录中包含了给定体系结构所必需的宏定义和内联函数。init目录该目录中存放的是系统核心初始化代码,内核初始化入口函数start_kernel就是在该目录中的文件main.c内实现的。kernel目录该目录中存放的是Linux内核的最核心的代码,用于实现系统的核心模块,这些模块包括:进程管理、进程调度器、中断处理、系统时钟管理、同步机制等。arch目录该目录中的每个子目录中都与某种体系结构相对应,用于存放体系结构相关代码,向平台无关的系统核心模块提供所需的功能接口。每个体系结构对应的子目录下通常至少包含以下几个子目录:kernel子目录、lib子目录、mm子目录、boot子目录。系统次核心组件包括:block目录:用于实现块设备的基本框架和块设备的I/O调度算法。usr目录:该目录中的代码为内核尚未完全启动时执行用户空间代码提供了支持ipc目录:该目录中的文件用于实现SystemV的进程间通信模块。driver目录:用于存放各类设备的驱动程序。sound目录:存放了声音系统架构,如OpenSoundSystem(OSS)、(ALSA)的相关代码和具体声卡的设备驱动程序。security目录:存放了Security-EnhancedLinux(SELinux)安全框架的实现代码crypto目录:该目录中存放了相关的加密算法的代码。Documentation目录:存放了与内核相关的文档。net和fs目录:包含linux内核支持的众多网络协议和文件系统。

阅读全文

与linuxsystem头文件相关的资料

热点内容
怎么把九游残留数据删除 浏览:828
有什么女生主动聊天的app 浏览:436
有哪些可以督促自己的app 浏览:244
用USB传输视频文件夹显示为空 浏览:710
恢复文件软件免费版手机 浏览:648
lg怎么隐藏文件 浏览:836
苹果免费读书app推荐 浏览:497
刘骏微信 浏览:113
书旗旧版本80 浏览:467
教编程考什么证 浏览:990
下载编程猫后哪里有客服 浏览:13
如何编辑歌曲文件格式 浏览:638
cf无限领取cdk工具 浏览:350
如何让手机文件保存到电脑上 浏览:459
sa数据库默认密码是多少 浏览:191
电脑正在查找文件 浏览:541
一个文件盒省内寄顺丰多少钱 浏览:41
诛仙62坐骑怎么升级到63 浏览:926
linux以日期查看日志记录 浏览:446
工业大数据是什么东西 浏览:881

友情链接