
linux c编程
代码修行者
这个作者很懒,什么都没留下…
展开
-
write&read&open
0标准输入 1标准输出 2标准错误#include<stdlib.h>#include<stdio.h>#include<string.h>int main(){ char buffer[128]; int nread; nread = read(0,buffer,128); //返回读取到的字符串个数 if(nr原创 2016-07-10 11:36:47 · 400 阅读 · 0 评论 -
getchar缓冲区
getchar()函数等待输入直到按回车才结束(前提是缓冲区没有数据),回车前的所有输入字符都会逐个显示在屏幕上。#include<stdio.h>#include<stdlib.h>int main(){ int ch; while((ch = getchar()) != EOF){ putchar(toupper(ch));原创 2016-07-18 11:36:10 · 655 阅读 · 0 评论 -
fork wait
如果父进程先结束,子进程不会自己结束#include<stdio.h>#include<stdlib.h>#include<sys/wait.h>int main(){ int a,b,c; if(a = fork()){ printf("fork1---%ld\n",a); int stat;原创 2016-07-18 14:41:10 · 738 阅读 · 0 评论 -
IO多路复用-Select
#include<stdio.h>#include<stdlib.h>#include<sys/types.h>#include<sys/time.h>#include<sys/ioctl.h>int main(){ char buffer[128]; int result,nread; fd_set inputs,testfds;原创 2016-07-13 22:53:38 · 400 阅读 · 0 评论 -
多线程
_REENTRANT宏 通过定义宏_REENTRANT来告诉编译器我们需要可重入功能#include<stdio.h>#include<stdlib.h>#include<pthread.h>void *thread_function(void *arg);int now_num = 1;int main(){ int res; pthread_t a_原创 2016-07-18 16:39:01 · 428 阅读 · 0 评论 -
多线程同步
信号量semaphore sem_post 计数器加一 sem_wait 计数器为递减 为0的时候等待#include<stdio.h>#include<stdlib.h>#include<pthread.h>#include<semaphore.h>#include<string.h>void *thread_function(void *arg);sem_t bin_sem原创 2016-07-19 16:34:18 · 432 阅读 · 0 评论 -
多线程脱离状态 + 调度
pthread_join 用来等待线程结束 不希望等待线程结束 就是用脱离状态(备注:进程结束了线程依然会结束) 根据文档 join 和 detached 要设置其中一种 否则多线程容易造成内存泄漏 #include<stdio.h>#include<stdlib.h>#include<string.h>#include<pthread.h>void *thread_funct原创 2016-07-19 17:28:33 · 700 阅读 · 0 评论 -
管道popen
popen会启动一个shell进程来解释请求的命令 使用方法和文件操作类似读#include<stdio.h>#include<stdlib.h>#include<string.h>int main(){ FILE *read_fp; char buffer[BUFSIZ + 1]; int chars_read; memset(buffer,'\0',原创 2016-07-22 11:16:21 · 693 阅读 · 0 评论 -
IO多路复用 epoll
epoll支持linux内核 类Unix如mac是不支持的#include<unistd.h>#include<stdio.h>#include<stdlib.h>#include<sys/types.h>#include<sys/socket.h>#include<netinet/in.h>#include<arpa/inet.h>#include<string.h>#inclu原创 2016-08-10 14:59:19 · 504 阅读 · 0 评论 -
哈希表
#include<stdio.h>#include<stdlib.h>#include<memory.h>typedef struct _NODE{ int data; struct _NODE *next;}NODE;typedef struct _HASH_TABLE{ NODE *value[10];}HASH_TABLE;HASH_T原创 2016-07-14 11:25:34 · 369 阅读 · 0 评论 -
socket
client#include<stdio.h>#include<stdlib.h>#include<sys/types.h>#include<sys/socket.h>#include<netinet/in.h>#include<arpa/inet.h>int main(){ int sockfd; int len; struct sock原创 2016-07-13 17:51:53 · 421 阅读 · 0 评论 -
目录操作
#include<stdio.h>#include<dirent.h>#include<sys/stat.h>int main(){ char *path = "/root"; DIR* dir = opendir(path); struct stat statbuf; struct dirent* read; ch原创 2016-07-10 19:12:55 · 576 阅读 · 0 评论 -
mmap内存映射
数据写入文件#include<stdio.h>#include<sys/mman.h>typedef struct{ int integer; char string[24];}RECORD;#define NRECORDS (100)int main(){ RECORD record, *mapped; int i,f;原创 2016-07-10 22:48:26 · 560 阅读 · 0 评论 -
option参数
如 ls -la 参数la 获取int main(int argc,char *argv[]){ int arg,opt; //传统方式 for(arg = 0 ; arg < argc ; arg++){ printf("%s\n",argv[arg]); } //getopt函数原创 2016-07-11 14:13:03 · 2273 阅读 · 0 评论 -
环境变量
#include<stdio.h>#include<stdlib.h>extern char **environ;int main(){ char *home = getenv("HOME"); //获得环境变量 printf("%s\n",home);//root putenv("HOME=home"); //设置环境变量 ho原创 2016-07-11 15:15:53 · 368 阅读 · 0 评论 -
time
#include<stdio.h>#include<time.h>#include<stdlib.h>int main(){ struct tm *tm_ptr; time_t the_time; int i; the_time = time((time_t *)0); printf("The time is %l原创 2016-07-11 16:22:18 · 351 阅读 · 0 评论 -
管道pipe
pipe是popen的底层函数 子进程调用 pipe3程序,传给pipe3 管道的文件描述符 pipe3对文件描述符进行读操作 实现不用进程之间的数据传输#include<stdio.h>#include<stdlib.h>#include<string.h>#include<unistd.h>原创 2016-07-22 16:04:42 · 534 阅读 · 0 评论 -
临时文件
#include<stdio.h>#include<stdlib.h>int main(){ char tmpname[L_tmpnam]; char * filename = tmpnam(tmpname); FILE *tmpfile = tmpfile(); //fclose后 文件计数器变为0 删除 printf("%s\n原创 2016-07-12 14:57:30 · 353 阅读 · 0 评论 -
日志
#include<stdio.h>#include<stdlib.h>#include<syslog.h>int main(){ FILE *f; f = fopen("something","r"); openlog("logmask",LOG_PID,LOG_USER); //可选的 在接下的所有log中 加入pid logmaks[6650]原创 2016-07-12 15:44:53 · 409 阅读 · 0 评论 -
共享内存
两个进程共享一块内存server#include<unistd.h>#include<stdlib.h>#include<stdio.h>#include<string.h>#include<sys/shm.h>#include "shm_com.h"int main(){ int running = 1; void *shared_memory = (void *)0;原创 2016-08-10 15:02:48 · 741 阅读 · 0 评论