linux笔记---程序函数
来源:互联网 发布:百度云域名查询 编辑:程序博客网 时间:2024/04/30 10:43
#include <sys/types.h>
#include <unistd.h>
#include <stdlib.h>
void fun()
{
printf("This is fun\n");
}
int main()
{
atexit(fun);
printf("hello\n");
sleep(5);
exit(0);
//exit(0);
//_exit;
pid_t id =fork();
if( id ==0)
{//child
printf("child: %d,%d\n",getpid(),getppid());
while(1);
}
else
{//father
printf("father: %d,%d\n",getpid(),getppid());
sleep(5);
exit(0);
}
}
2.exit函数
#include<stdio.h>
void exit(int status);
void_Exit(int status);
保留再退
#include<unistd.h>
void_exit(int status);
强退
#inclde <stdlib.h>
int atexit(void(*fun)(void));
在进程结束后系统才调用atexit(void(*fun)(void))注册的函数指针指向的回掉函数;即在(*fun)结束后
3.存储器分配
#include<stdlib.h>
void *malloc(size_t ,size);
void *calloc(size_t nobi,size_t size);
void *realloc(void*ptr,size_t,newzise);
void free(void *ptr);
》malloc函数,分配指定字节存储区,初始值不确定
》calloc函数,指定数量,长度的对象分配存储空间,空间内每一位都为0。
》yealloc函数,更改存储区长度,新增区域初始值不确定。ptr为空,malloc与yealloc相同
*分配空间要大于实际存储空间,即分配空间=存储空间+管理信息空间+未利用空间。不可在分配区起始位置前写入,会重写上条分配区的管理信息,很难被发现。
4.环境变量:name=value
#include<stdlib.h>
char
5.setjmp和longjmp
#nclude <setjmp.h>
int setjmp(jmp_buf env);
void longjmp(jmp_buf env,int val);
6.getrlimit和setlimit函数
#include<sys/resource.h>
int getrlimit(int resource,struct rlimit *rlbtr);
int setrlimit(int resource,const struct rlimit *rlbtr);
7.uid,euid,uid作用显示
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <string.h>
int main()
{
printf("pid: %d ,ppid: %d,uid: %d,euid: %d,gid: %d,egid: %d\n",getpid(),getppid(),getuid(),geteuid(),getgid(),getegid);
return 0;
FILE *fp = fopen("./log","w");
if(!fp)
{
perror("fopen");
return -1;
}
int count = 10;
const char *msg = "hello bit\n";
while(count)
{
fwrite(msg,1,strlen(msg),fp);
count--;
}
fclose(fp);
return 0;
}
8.xfork函数
vfork用于创建一个新进程进而创建一个新程序。
Vfork与fork都会创建一个子进程,但他不会将父进程地址空间复制到子进程中,因为子进程会立即调用exec,于是不会访问地址空间。
若子进程调用exec或exit之前,它在父进程的空间中运行,也就是说会更改父进程的数据段,栈和堆。
#include <unistd.h>
#include <stdlib.h>
void fun()
{
printf("This is fun\n");
}
int main()
{
atexit(fun);
printf("hello\n");
sleep(5);
exit(0);
//exit(0);
//_exit;
pid_t id =fork();
if( id ==0)
{//child
printf("child: %d,%d\n",getpid(),getppid());
while(1);
}
else
{//father
printf("father: %d,%d\n",getpid(),getppid());
sleep(5);
exit(0);
}
}
2.exit函数
#include<stdio.h>
void exit(int status);
void_Exit(int status);
保留再退
#include<unistd.h>
void_exit(int status);
强退
#inclde <stdlib.h>
int atexit(void(*fun)(void));
在进程结束后系统才调用atexit(void(*fun)(void))注册的函数指针指向的回掉函数;即在(*fun)结束后
3.存储器分配
#include<stdlib.h>
void *malloc(size_t ,size);
void *calloc(size_t nobi,size_t size);
void *realloc(void*ptr,size_t,newzise);
void free(void *ptr);
》malloc函数,分配指定字节存储区,初始值不确定
》calloc函数,指定数量,长度的对象分配存储空间,空间内每一位都为0。
》yealloc函数,更改存储区长度,新增区域初始值不确定。ptr为空,malloc与yealloc相同
*分配空间要大于实际存储空间,即分配空间=存储空间+管理信息空间+未利用空间。不可在分配区起始位置前写入,会重写上条分配区的管理信息,很难被发现。
4.环境变量:name=value
#include<stdlib.h>
char
5.setjmp和longjmp
#nclude <setjmp.h>
int setjmp(jmp_buf env);
void longjmp(jmp_buf env,int val);
6.getrlimit和setlimit函数
#include<sys/resource.h>
int getrlimit(int resource,struct rlimit *rlbtr);
int setrlimit(int resource,const struct rlimit *rlbtr);
7.uid,euid,uid作用显示
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <string.h>
int main()
{
printf("pid: %d ,ppid: %d,uid: %d,euid: %d,gid: %d,egid: %d\n",getpid(),getppid(),getuid(),geteuid(),getgid(),getegid);
return 0;
FILE *fp = fopen("./log","w");
if(!fp)
{
perror("fopen");
return -1;
}
int count = 10;
const char *msg = "hello bit\n";
while(count)
{
fwrite(msg,1,strlen(msg),fp);
count--;
}
fclose(fp);
return 0;
}
8.xfork函数
vfork用于创建一个新进程进而创建一个新程序。
Vfork与fork都会创建一个子进程,但他不会将父进程地址空间复制到子进程中,因为子进程会立即调用exec,于是不会访问地址空间。
若子进程调用exec或exit之前,它在父进程的空间中运行,也就是说会更改父进程的数据段,栈和堆。
Vfork与fork区别在于:vfork保证子进程先运行,在他调用exec或(exit)之后父进程才可被调度运行
(复习框架,不时更新)
0 0
- linux笔记---程序函数
- linux学习笔记:程序管理
- Linux笔记 程序调试gdb
- linux线程 基本函数 笔记
- linux内核函数笔记(一)
- linux内核函数笔记(二)
- Linux Shell笔记之函数
- Linux Shell笔记之函数
- 学习笔记:Injlib程序中的相关函数
- linux下gethostbyname函数示例程序
- linux下生成C程序函数列表
- linux c 时间函数,获取程序执行时间
- Linux 32bit 程序的函数调用
- linux下统计程序/函数运行时间
- linux/unix关于程序的退出函数
- Linux 执行新程序:execve() 函数
- Linux下c程序开发笔记
- Linux学习笔记 - 程序的执行(一)
- C++构造函数初始化列表与赋值
- 第一行代码笔记 下拉刷新卡片现实上滑隐藏标题栏的demo
- Android中Activity中某个EditText被clearFocus后其他控件(别的EditText)也不要获得焦点
- Android 监听EditText 使Button是否能可用工具类
- JS删除Cookies操作
- linux笔记---程序函数
- SSM框架——详细整合教程(Spring+SpringMVC+MyBatis)
- 搬家
- 简单谈谈对C++设计模式的理解
- MySQL基本操作
- K8S对node添加label,并根据label筛选节点
- Binary Tree Paths
- Android中画边框线,EditText四周边框线
- 代码GC测试