linux c 编程 ------ 常见函数

fork():创建一个进程

exec():停止当前进程中程序的执行,让当前进程执行另一个程序

access():查看是否有操作文件的权限,可以用来判断一个文件是否存在

pipe():无名管道,用在父子进程间通信

mkfifo():有名管道,用在进程间通信

消息队列:进程间通信

 

 

 

结构体成员A的结构体首地址  container_of(结构体成员A的指针, 结构体类型, 结构体成员A) 

#include <stdio.h>
#include <linux/kernel.h>
struct student {
        char name[20];
        char sex;
};
#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
#define container_of(ptr, type, member) ({ \
        const typeof( ((type *)0)->member ) *__mptr = (ptr); \
        (type *)( (char *)__mptr - offsetof(type,member) );})
int main()
{
        struct student st={"zhangsan",'m'};
        struct student *tmp;
        char *ptr_name=st.name;
        tmp=container_of(ptr_name,struct student,name);
        printf("tmp->name=%s\n",tmp->name);
        printf("tmp->sex=%c\n",tmp->sex);
        return 0;
}

 

 

ioctl是设备驱动程序中对设备的I/O通道进行管理的函数。所谓对I/O通道进行管理,就是对设备的一些特性进行控制,例如串口的传输波特率、马达的转速等等。它的调用个数如下: 

int ioctl(int fd, ind cmd, …); 
    其中fd是用户程序打开设备时使用open函数返回的文件标示符,cmd是用户程序对设备的控制命令,至于后面的省略号,那是一些补充参数,一般最多一个,这个参数的有无和cmd的意义相关。 

 

posted @ 2018-03-25 12:43  流水灯  阅读(228)  评论(0编辑  收藏  举报