小编Jam*_* S.的帖子

为什么不解决分叉过程中的变化?

我正在尝试理解fork()和处理地址空间。我写了一个基本的概念证明程序,它派生出一个新进程并更改新进程中的一个变量。我的期望是,当我更改孩子中的变量时,这应该会导致该变量获得新地址。如果我理解正确,Linux 会使用 fork 进行写时复制。所以我希望父级和子级中的变量地址匹配,直到我在其中之一中更改它。那么我希望他们会有所不同。然而,这不是我所看到的。

这是因为写时复制从物理内存中分配了一个新页面,但进程地址空间没有改变 - 只是由 TLB 重新映射到新页面?还是我不理解这一点或在我的程序中犯了转储错误?

概念验证代码:

#include <iostream>
#include <string>
#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>

void describe(const std::string &descr, const int &data) {
    pid_t ppid = getppid();
    pid_t pid = getpid();

    std::cout << "In " << descr << ":\n"
              << "Parent Process ID:  " << ppid
              << "\nMy Process ID:  " << pid
              << "\nValue of data:  " << data
              << "\nAddress of data:  " << &data << "\n\n";
}

void change(int &data) …
Run Code Online (Sandbox Code Playgroud)

c c++ linux fork virtual-memory

16
推荐指数
1
解决办法
477
查看次数

可以使用 Microsoft Graph PowerShell cmdlet 从AdditionalProperties 字典中提取信息吗?

我尝试使用 PowerShell Graph cmdlet 而不是 Azure AD 模块 cmdlet。使用 Azure AD 模块,我可以执行以下操作:

# This is what I want:
get-azureadgroupmember -objectid $GroupID | select-object -property displayname, `
    mail, userprincipalname, objectid

DisplayName     Mail                        UserPrincipalName  ObjectId
-----------     ----                        -----------------  --------
John Smith      John.Smith@example.org      jsmith@example.org 4bae8291-6ec3-192b-32ce-dd21869ef784
(...)


# All of these properties are directly accessible in the returned objects:
$res = get-azureadgroupmember -objectid $GroupID
$res[0] | fl -prop *
# Shows long list of directly accessible properties
Run Code Online (Sandbox Code Playgroud)

我试图找出 PowerShell Graph 的等价物:

$res = get-mggroupmember …
Run Code Online (Sandbox Code Playgroud)

powershell azure-active-directory microsoft-graph-api

5
推荐指数
1
解决办法
5414
查看次数