系统编程
华丽邂逅_
BE FAST !
展开
-
Unix/Linux下的open函数(O_CREAT和O_EXCL)
今天想在Ubuntu上用open()实现检测文件是否存在,若存在就read()的功能,代码如下:int fd=open(temp,O_RDONLY|O_CREAT|O_EXCL,S_IRWXU);if(-1==fd) return -2;ssize_t nbytesRead = read(fd, buffer, count);close(fd); 结果失败了,错误为“Bad转载 2017-11-02 19:13:51 · 1342 阅读 · 0 评论 -
线程-属性分离2
#include "io.h"void* thread_fun(void* arg){ int i = 0; while (i++ < 10) { printf("i=%d\n", i); sleep(1); } pthread_exit((void*)0);}pthread_attr_t dattr = PTHREAD原创 2017-11-15 17:21:53 · 310 阅读 · 0 评论 -
线程属性-分离
#ifndef __IO_H__#define __IO_H__#include <stdio.h>#include <stdlib.h>#include <string.h>#include <errno.h>#include <fcntl.h>#include <unistd.h>#include <pthread.h>#endif#include "io.h"void* thr原创 2017-11-15 17:17:14 · 424 阅读 · 0 评论 -
网络通信
网络通信五要素: 目标ip,目标端口,协议,源ip,源端口。 数据链路层——ARP,RARP—– tcp:字节流,一个字节一个字节传输。架起管道(逻辑), UDP:报文三次握手:会确定协议格式、编码。。int socket(int domain,, int type, int protocol)在内核中建立一个数据结构 SOCK_SEQPACKET:结合了udp和tcp的优点。原创 2017-11-20 20:16:13 · 329 阅读 · 0 评论 -
相同机器进程间通信-信号量
高效的进程间通信 共享内存 — 实时性最好信号量#include "io.h"#include <sys/sem.h>int init(int semnums, int value){ key_t key = ftok("/etc", 100); int semid = -1; semid = semget(key, semnums, 0600 | IPC_CR原创 2017-11-20 16:20:06 · 476 阅读 · 0 评论 -
系统编程-挂起(Ctrl+Z)
#include "io.h"void sighandler(int signo){ printf("CTRL + Z clicked!\n");/*tstp*/ signal(SIGTSTP, SIG_DFL); //signal(SIGTSTP, SIG_IGN);}int main(int argc, char const *argv[]){ if (s原创 2017-11-14 19:24:07 · 525 阅读 · 0 评论 -
不可靠信号
#include "io.h"static int flag = 0;void sighandler(int signo){ signal(SIGINT, sighandler); //它会跳过 printf("test sigint signal\n"); sleep(3); flag = 1;}int main(int argc, char const *原创 2017-11-14 19:23:15 · 391 阅读 · 0 评论 -
系统编程-信号?
#include "io.h"static int varArray[10]; /*初始化了(static)*/void set(int * array, int value){ int i = 0; for (; i < 10; i++) { array[i] = value; sleep(1); }}void sighandl原创 2017-11-14 19:22:33 · 426 阅读 · 0 评论 -
alarm
#include "io.h"void sighandler(int signo){ printf("timeout\n");}int main(int argc, char const *argv[]){ /* code */ signal(SIGALRM, sighandler); alarm(5); while (1)sleep(1); r原创 2017-11-14 19:21:32 · 393 阅读 · 0 评论 -
信号屏蔽字&信号未决字
#include "io.h"#include <signal.h>void sighandler(int signo){ sigset_t newset, oldset; sigset_t pendset; sigprocmask(SIG_SETMASK, NULL, &oldset); int i = 0; printf("mask:");原创 2017-11-14 19:20:17 · 509 阅读 · 0 评论 -
linux系统编程
进程从就绪态到达阻塞状态: ctrl + z fg %id 即可挂起短跳转,长跳转 。 goto ,只能在局部 非局部跳转 setjmp, longjmp原创 2017-11-14 19:15:29 · 329 阅读 · 0 评论 -
进程间通信IPC
1. 管道:关系进程的进程间通信 父子关系 没有关系的进程通过信号进行通信 管道比共享内存的实时性好 Linux下默认遵守POSIX的进程间通信匿名管道(管道pipe) 命名管道(FIFO)套接字 高级IPC 不同主机间通信管道通信最常见的IPC方式4. 管道创建include int pipe(int fd[2]);返回:成功为0 ,失败为-1.管道的数据结构全部在内核空间完成;保原创 2017-11-17 12:03:35 · 271 阅读 · 0 评论 -
线程练习
用现成实现生产者消费者问题 龟兔赛跑原创 2017-11-15 17:28:13 · 294 阅读 · 0 评论