- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我的代码是共享库,它应该只有一个库实例吗?
我有一个静态变量,每次调用函数时都会更改它。而且它似乎一直在恢复到默认值。
我做错了什么?
我用它编译的
gcc -fPIC -Wall -shared -lpam -o pam_hook.so pam_hook.c
代码:
static int is_reqest_sent=0;
int PAM_LOG_args( char * function, int argc, const char ** argv,int flags,pam_handle_t *pamh)
{
int ret = 0,i=0;
char **pam_envlist, **pam_env;
FILE * fp = fopen ("/var/log/pam_flow.log","a");
fprintf(fp,"function : %s flags %d \n",function,flags);
fprintf (fp, "my PID: %d parent PID %d is_reqest_sent : %d\n",
getpid(),getppid(),is_reqest_sent);
/* export PAM environment */
if (pamh!=NULL)
{
if ((pam_envlist = pam_getenvlist(pamh)) != NULL)
for (pam_env = pam_envlist; *pam_env != NULL; ++pam_env) {
fprintf(fp,"%s\n",*pam_env);
free(*pam_env);
}
}
for(i=0;i<=argc-1;i++)
fprintf(fp,"%s\n",argv[i]);
fclose(fp);
return ret;
}
int isRequestSent(void)
{
if(is_reqest_sent==0)
{
is_reqest_sent=1;
return 0;
}
else
{
is_reqest_sent=0;
return 1;
}
}
PAM_EXTERN int pam_sm_authenticate(pam_handle_t *pamh, int flags, int argc, const char **argv) {
const char * password=NULL;
struct passwd *pwd;
const char *user;
int pam_err=0;
PAM_LOG_args( "pam_sm_authenticate", argc, argv,flags,pamh);
printTime();
/* identify user */
pam_err = pam_get_user(pamh, &user, NULL);
if (pam_err != PAM_SUCCESS)
{
return (pam_err);
}
if ((pwd = getpwnam(user)) == NULL)
{
return (PAM_USER_UNKNOWN);
}
/*note : if user is not deefined pawsword return will be "^H$^M^?INCORRECT^@" */
pam_err = pam_get_authtok(pamh, PAM_AUTHTOK, &password , NULL);
if (pam_err!=PAM_SUCCESS)
{
return (PAM_AUTH_ERR);
}
if(isRequestSent()==0)
{
debugPrint("isRequestSent return 0");
}
return (PAM_SUCCESS);
}
PAM_EXTERN int pam_sm_open_session(pam_handle_t *pamh, int flags, int argc, const char **argv) {
PAM_LOG_args( "pam_sm_open_session ", argc, argv,flags,pamh);
debugPrint("pam_sm_open_session ","",0,pamh);
printTime();
printLogoutLoging(pamh,1);
return PAM_SUCCESS;
}
并打印出我必须打印 is_reqest_sent
的值和进程 pid:
函数:pam_sm_authenticate 标志 1
my PID: 9521 parent PID 9514 is_reqest_sent : 0
函数:pam_sm_open_session 标志 0
my PID: 9521 parent PID 9514 is_reqest_sent : 1
函数:pam_sm_authenticate 标志 1
my PID: 9528 parent PID 9514 is_reqest_sent : 0
最佳答案
全局变量不是共享的,因为每个进程都在使用其自己的 地址空间。代码是共享的,内存不是。
要在进程之间共享内存,请使用 "Shared Memory" (aka SHM) .
关于c - 为什么在不同进程中多次创建共享库中的静态变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49842496/
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: How to nest OR statements in JavaScript? 有没有办法做到这一点:
在 JavaScript 中有没有办法让一个变量总是等于一个变量?喜欢var1 = var2但是当var2更新,也是var1 . 例子 var var1 = document.getElementBy
我正在努力理解这代表什么 var1 = var2 == var3 我的猜测是这等同于: if (var2 == var3): var1 = var2 最佳答案 赋值 var1 = var2
这个问题已经有答案了: What does the PHP error message "Notice: Use of undefined constant" mean? (2 个回答) 已关闭 8
我在临时表中有几条记录,我想从每条记录中获取一个值并将其添加到一个变量中,例如 color | caption -------------------------------- re
如何将字符串转为变量(字符串变量--> $variable)? 或者用逗号分隔的变量列表然后转换为实际变量。 我有 2 个文件: 列名文件 行文件 我需要根据字符串匹配行文件中的整行,并根据列名文件命
我有一个我无法解决的基本 php 问题,我也想了解为什么! $upperValueCB = 10; $passNodeMatrixSource = 'CB'; $topValue= '$uppe
这可能吗? php $variable = $variable1 || $variable2? 如果 $variable1 为空则使用 $variable2 是否存在类似的东西? 最佳答案 PHP 5
在 Perl 5.20 中,for 循环似乎能够修改模块作用域的变量,但不能修改父作用域中的词法变量。 #!/usr/bin/env perl use strict; use warnings; ou
为什么这不起作用: var variable; variable = variable.concat(variable2); $('#lunk').append(variable) 我无法弄清楚这一点
根据我的理解,在32位机器上,指针的sizeof是32位(4字节),而在64位机器上,它是8字节。无论它们指向什么数据类型,它们都有固定的大小。我的计算机在 64 位上运行,但是当我打印包含 * 的大
例如: int a = 10; a += 1.5; 这运行得很完美,但是 a = a+1.5; 此作业表示类型不匹配:无法从 double 转换为 int。所以我的问题是:+= 运算符 和= 运算符
您好,我写了这个 MySQL 存储过程,但我一直收到这个语法错误 #1064 - You have an error in your SQL syntax; check the manual that
我试图在我的场景中显示特定的奖牌,这取决于你的高分是基于关卡的目标。 // Get Medal Colour if levelHighscore goalScore { sc
我必须维护相当古老的 Visual C++ 源代码的大型代码库。我发现代码如下: bIsOk = !!m_ptr->isOpen(some Parameters) bIsOk的数据类型是bool,is
我有一个从 MySQL 数据库中提取的动态产品列表。在 list 上有一个立即联系 按钮,我正在使用一个 jquery Modal 脚本,它会弹出一个表单。 我的问题是尝试将产品信息变量传递给该弹出窗
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: What is the difference between (type)value and type(va
jQuery Core Style Guidelines建议两种不同的方法来检查变量是否已定义。 全局变量:typeof variable === "undefined" 局部变量:variable
这个问题已经有答案了: 已关闭11 年前。 Possible Duplicate: “Variable” Variables in Javascript? 我想肯定有一种方法可以在 JavaScrip
在语句中使用多重赋值有什么优点或缺点吗?在简单的例子中 var1 = var2 = true; 赋值是从右到左的(我相信 C# 中的所有赋值都是如此,而且可能是 Java,尽管我没有检查后者)。但是,
我是一名优秀的程序员,十分优秀!