Repito que não é uma questão real do Ubuntu, mas aqui está a minha resposta com base no link popen Eu te enviei
#include <iostream>
#include <stdio.h>
using namespace std;
int main() {
FILE *in;
char buff[512];
if(!(in = popen("dpkg -l > ~/appslist", "r"))){
return 1;
}
pclose(in);
if(!(in = popen("cat ~/appslist", "r"))){
return 1;
}
while(fgets(buff, sizeof(buff), in)!=NULL){
cout << buff;
}
pclose(in);
return 0;
}
(usei o caminho ~ / appslist para ter permissão como usuário normal)