2013年7月19日

摘要: fscanf(格式化字符串输入)相关函数scanf,sscanf表头文件#include定义函数int fscanf(FILE * stream ,const char*format,....);函数说明fscanf()会自参数stream的文件流中读取字符串,再根据参数format字符串来转换并格式化数据。格式转换形式请参考scanf()。转换后的结构存于对应的参数内。返回值成功则返回参数数目,失败则返回-1,错误原因存于errno中。附加说明范例#includemain(){int i;unsigned int j;char s[5];fscanf(stdin,”%d %x %5[a-z] 阅读全文
posted @ 2013-07-19 16:01 小葫芦藤 阅读(1155) 评论(0) 推荐(0) 编辑
摘要: 以struct和union为线索来观察信号量第一部分 semid_ds ipc_perm内核为每个信号量集合维护一个结构体semid_ds:struct semid_ds { struct ipc_perm sem_perm; unsigned short sem_nsems; /* # of semaphore in set */ time_t sem_otime; /* last-semop() time */ time_t sem_ctime; /* last-change time */ …};semid_ds的一个结构体成员ipc_perm是XSI IPC为每一个IPC结构设置的, 阅读全文
posted @ 2013-07-19 15:58 小葫芦藤 阅读(616) 评论(0) 推荐(0) 编辑
摘要: semget() 可以使用系统调用semget()创建一个新的信号量集,或者存取一个已经存在的信号量集:系统调用:semget();原型:intsemget(key_t key,int nsems,int semflg);返回值:如果成功,则返回信号量集的IPC标识符。如果失败,则返回-1:errno=EACCESS(没有权限)EEXIST(信号量集已经存在,无法创建)EIDRM(信号量集已经删除)ENOENT(信号量集不存在,同时没有使用IPC_CREAT)ENOMEM(没有足够的内存创建新的信号量集)ENOSPC(超出限制) 系统调用semget()的第一个参数是关键字值(一般是由系统调用 阅读全文
posted @ 2013-07-19 15:18 小葫芦藤 阅读(1327) 评论(0) 推荐(0) 编辑
摘要: #include #include int shmget(key_t key, size_t size, int shmflg);key_t key----------------------------------------------- key标识共享内存的键值: 0/IPC_PRIVATE。 当key的取值为IPC_PRIVATE,则函数shmget()将创建一块新的共享内存;如果key的取值为0,而参数shmflg中设置了IPC_PRIVATE这个标志,则同样将创建一块新的共享内存。 在IPC的通信模式下,不管是使用消息队列还是共享内存,甚至是信号量,每个IPC的对象(o... 阅读全文
posted @ 2013-07-19 14:50 小葫芦藤 阅读(452) 评论(0) 推荐(0) 编辑
摘要: 系统建立IPC通讯(如消息队列、共享内存时)必须指定一个ID值。通常情况下,该id值通过ftok函数得到。 ftok原型如下: key_t ftok( char * fname, int id ) fname就时你指定的文件名(该文件必须是存在而且可以访问的),id是子序号,虽然为int,但是只有8个比特被使用(0-255)。 当成功执行的时候,一个key_t值将会被返回,否则 -1 被返回。 在一般的UNI... 阅读全文
posted @ 2013-07-19 14:10 小葫芦藤 阅读(2120) 评论(0) 推荐(0) 编辑

导航