linux系统编程
追兮兮
这个作者很懒,什么都没留下…
展开
-
编写第一个Makefile(HelloWorld)
什么是Makefile讲makefie之前,先将将什么是make;make是一个命令工具,是一个解释makefile中指令的命令工具。它可以简化编译过程里面所下达的指令,当执行 make 时,make 会在当前的目录下搜寻 Makefile (or makefile) 这个文本文件,执行对应的操作。make 会自动的判别原始码是否经过变动了,而自动更新执行档。makefile其实就是一个文档,里面定义了一系列的规则指定哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,它记录了原始码如何编译的详原创 2020-12-04 20:58:16 · 3591 阅读 · 0 评论 -
网络编程(Linux系统编程)
socket编程步骤模拟场景Sockt服务器和客户端的开发步骤Linux提供的API简析创建套接字(连接协议)int socket(int domain,int type,int protocol)准备好地址int bind(int sockfd, const struct sockaddr *addr,socklen_t addrlen);地址转换API int inet_aton(const char *straddr, struct in_addr *addrp)原创 2020-07-29 11:30:01 · 209 阅读 · 0 评论 -
TCP与UDP、端口号(Linux 系统编程)
TCP与UDP的对比端口号的作用原创 2020-07-27 15:37:58 · 234 阅读 · 0 评论 -
Linux线程介绍(Linux 系统编程)
进程与线程典型的UNIX/Linux进程可以看成只有一个控制线程:一个进程在同一时刻只做一件事情。有了多个控制线程后,在程序设计时可以把进程设计成在同一时刻做不止一件事,每个线程各自处理独立的任务。 进程是程序执行时的一个实例,是担当分配系统资源(CPU时间、内存等)的基本单位。在面向线程设计的系统中,进程本身不是基本运行单位,而是线程的容器。程序本身只是指令、数据及其组织形式的描述,进程才是程序(那些指令和数据)的真正运行实例。 线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,原创 2020-07-27 15:06:37 · 253 阅读 · 0 评论 -
进程间的五种通信(linux系统编程)
参考:https://blog.csdn.net/wh_sjc/article/details/70283843一、管道管道,通常指无名管道,是 UNIX 系统IPC最古老的形式。特点:它是半双工的(即数据只能在一个方向上流动),具有固定的读端和写端。它只能用于具有亲缘关系的进程之间的通信(也是父子进程或者兄弟进程之间)。它可以看成是一种特殊的文件,对于它的读写也可以使用普通的read、write 等函数。但是它不是普通的文件,并不属于其他任何文件系统,并且只存在于内存中。原型1 #incl原创 2020-07-26 12:09:38 · 398 阅读 · 0 评论 -
popen函数(Linux系统编程)
#include <stdio.h>#include <unistd.h>#include <stdlib.h>int main(){ int nread; char ret[1024]={0}; FILE *fp;//文件流 // FILE *popen(const char *command, const char *type); fp=popen("ps","r");//用r的方式打开(只读方式打开) //size_t fread(void原创 2020-07-23 14:36:17 · 189 阅读 · 0 评论 -
exec族函数配合fork使用(linux系统编程)
execl()函数配合fork()函数在执行A程序的过程中去执行B程序代码B(用来改文件中的数值)#include <stdio.h>#include <string.h>#include <unistd.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <stdlib.h>#include <sys/wa原创 2020-07-23 10:51:02 · 224 阅读 · 0 评论 -
父进程等待子进程退出(linux系统编程)
为什么要等待子进程退出父进程等待子进程退出并收集子进程退出状态子进程退出状态不被收集,会变成僵尸进程举个例子#include <stdio.h>#include <sys/types.h>#include <unistd.h>#include <stdlib.h>int main(){ pid_t pid; int i; int cnt=0; pid=fork(); if(pid > 0){//父进程 while(1)原创 2020-07-22 22:10:10 · 1328 阅读 · 0 评论 -
vfork创建进程(linux系统编程)
vfork与fork的区别区别:vfork直接使用父进程的存储空间,不进行拷贝;vfork保证子进程先运行,直到子进程调用exit退出后,父进程才执行。简单的代码实现一下#include <stdio.h>#include <sys/types.h>#include <unistd.h>#include <stdlib.h>int main(){ pid_t pid; int i; pid=vfork(); if(pid > 0)原创 2020-07-22 15:26:25 · 242 阅读 · 0 评论 -
创建进程函数fork的使用(Linux系统编程)
使用fork函数创建一个进程pid_t fork(void)fork函数调用成功,返回两次返回值为0;代表当前进程是子进程返回值为非负数,代表当前进程为父进程如果调用失败则返回-1代码#include <sys/types.h>#include <unistd.h>#include <stdio.h>int main(){ pid_t pid; pid=getpid(); fork(); printf("pid 是:%d\n",pid);原创 2020-07-20 22:35:05 · 273 阅读 · 0 评论 -
进程的相概念(linux系统编程)
什么是程序,什么是进程,有什么区别程序是静态的概念,gcc xx.x -o pro,磁盘中生成的pro就是程序。进程是程序的一次运行活动,通俗的讲就是程序跑起来了,系统中就多了一个进程。在Linux里面怎么查看系统中有哪些进程使用ps指令查看在实际工作中,配合grep来查找程序中是否存在某一进程使用top指令查看,类似Windows的任务管理器什么是进程标识符每个进程都有一个非负整数表示唯一的ID,叫做pid,类似身份证pid=0 称为交换进程(swapper)作用:进程调度原创 2020-07-20 20:54:11 · 120 阅读 · 0 评论 -
fputc、fgetc、feof的使用(linux系统编程)
fputc函数的使用代码#include <stdio.h>#include <string.h>int main(){ FILE *fp; int i; char *str="hello ubuntu"; int len=strlen(str); fp=fopen("./test15.txt","w+"); for(i=0;i<len;i++){ // int fputs(const char *s, FILE *stream); fputc(原创 2020-07-17 20:25:06 · 267 阅读 · 0 评论 -
标准c库打开创建文件读写文件光标移动
fopen()函数fopen只能配合使用fread、fwrite等不能是read,write。例子#include <stdio.h>#include <string.h>#include <stdlib.h>int main(){ FILE *fp; char *str="hello ubuntu"; char *readBuf; // FILE *fopen(const char *pathname, const char *mode.原创 2020-07-15 22:03:51 · 272 阅读 · 0 评论 -
文件编程小应用之修改配置文件内容(linux系统编程)
配置文件的修改之前配置好的一个文件test.config,内容是现在如何把leng=6中的6 换个数字呢比如9,此时就需要用到一个字符串函数strstr(),他能找到我们需要操作的字符串。首先我们先要找到位置a,然后a往后移几位到数字6(b),最后进行修改代码实现#include <stdio.h>#include <string.h>#include <unistd.h>#include <sys/types.h>#inc原创 2020-07-14 21:28:08 · 315 阅读 · 0 评论 -
文件操作小应用实现CP指令(linux 系统编程)
思路打开src.c(要被复制的文件)读取里面的内容到readbuf打开/创建目标文件(des.c)把readbuf里面的内容写到目标文件关闭两个文件针对C语言参数的测试代码#include <stdio.h>int main(int argc,char**argv){ printf("参数的总个数:%d\n",argc); printf("第一个参数是:%s\n",argv[0]); printf("第二个参数是:%s\n",argv[1]); printf("第原创 2020-07-13 21:12:38 · 309 阅读 · 0 评论 -
文件读取操作(linux系统编程)
read函数man手册介绍代码#include <stdio.h>#include <string.h>#include <unistd.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <stdlib.h>int main(){ int fd; int n_open; int n_write;.原创 2020-07-11 22:09:10 · 218 阅读 · 0 评论 -
文件写入操作编程(Linux系统编程)
write函数man手册的相关介绍代码实现#include <stdio.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <unistd.h>#include <string.h>#include <stdlib.h>int main(){ int fd; int n_write; char r.原创 2020-07-10 22:08:06 · 377 阅读 · 0 评论 -
打开/创建文件(linux系统编程)
open函数参数说明demo1代码#include <stdio.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>int main(){ int fd; //int open(const char *pathname, int flags); fd=open("./file1",O_RDWR);//可读可写 printf("fd=%.原创 2020-07-10 17:18:10 · 535 阅读 · 0 评论